package com.qire.manhua.model.viewModel;

import android.graphics.drawable.Drawable;

import com.qire.antsbinder.viewModel.annotation.ViewModelProperty;
import com.qire.common.support.base.IViewModel;
import com.qire.manhua.BR;

import androidx.lifecycle.MutableLiveData;

public interface ILoginGuideViewModel extends IViewModel {

    int variableId = BR.loginGuideViewModel;

    // region #面板布局操作
    @ViewModelProperty(name = "panelBgRid")
    MutableLiveData<Integer> getPanelBgRid();

    @ViewModelProperty(name = "title")
    MutableLiveData<String> getTitle();

    @ViewModelProperty(name = "layoutVisible")
    MutableLiveData<int[]> getLayoutVisible();

    @ViewModelProperty(name = "forgotPasswordBtnVisible")
    MutableLiveData<Integer> getForgotPasswordBtnVisible();

    @ViewModelProperty(name = "skipBtnVisible")
    MutableLiveData<Integer> getSkipBtnVisible();
    // endregion

    // region #手机号码验证阶段
    @ViewModelProperty(name = "phoneVerifyButtonVisible")
    MutableLiveData<Integer> getPhoneVerifyButtonVisible();

    @ViewModelProperty(name = "thirdPlatformLayoutVisible")
    MutableLiveData<Integer> getThirdPlatformLayoutVisible();

    @ViewModelProperty(name = "phoneNumber")
    MutableLiveData<String> getPhoneNumber();

    @ViewModelProperty(name = "agreeProtocol")
    MutableLiveData<Boolean> getAgreeProtocol();

    @ViewModelProperty(name = "phoneVerifyButtonEnabled")
    MutableLiveData<Boolean> getPhoneVerifyButtonEnabled();

    @ViewModelProperty(name = "phoneVerifyButtonBackground")
    MutableLiveData<Drawable> getPhoneVerifyButtonBackground();

    @ViewModelProperty(name = "phoneVerifyButtonTextColor")
    MutableLiveData<String> getPhoneVerifyButtonTextColor();
    // endregion

    // region #验证码验证阶段
    @ViewModelProperty(name = {"verifyCode4", "verifyCode3", "verifyCode2", "verifyCode1"}, type = ViewModelProperty.Type.SET)
    void setVerifyCode(String verifyCode4, String verifyCode3, String verifyCode2, String verifyCode1);

    @ViewModelProperty(name = "verifyCode1")
    MutableLiveData<String> getVerifyCode1();

    @ViewModelProperty(name = "verifyCode2")
    MutableLiveData<String> getVerifyCode2();

    @ViewModelProperty(name = "verifyCode3")
    MutableLiveData<String> getVerifyCode3();

    @ViewModelProperty(name = "verifyCode4")
    MutableLiveData<String> getVerifyCode4();


    @ViewModelProperty(name = "fetchVerifyCodeText")
    MutableLiveData<CharSequence> getFetchVerifyCodeText();

    @ViewModelProperty(name = "fetchVerifyCodeTextColor")
    MutableLiveData<String> getFetchVerifyCodeTextColor();

    @ViewModelProperty(name = "fetchVerifyCodeTextEnabled")
    MutableLiveData<Boolean> getFetchVerifyCodeTextEnabled();

    @ViewModelProperty(name = "verifyBtnEnabled")
    MutableLiveData<Boolean> getVerifyBtnEnabled();

    @ViewModelProperty(name = "verifyBtnBackground")
    MutableLiveData<Drawable> getVerifyBtnBackground();

    @ViewModelProperty(name = "verifyBtnTextColor")
    MutableLiveData<String> getVerifyBtnTextColor();
    // endregion

    // region #注册阶段
    @ViewModelProperty(name = "registerPassword")
    MutableLiveData<String> getRegisterPassword();

    @ViewModelProperty(name = "registerBtnEnabled")
    MutableLiveData<Boolean> getRegisterBtnEnabled();

    @ViewModelProperty(name = "registerBtnBackground")
    MutableLiveData<Drawable> getRegisterBtnBackground();

    @ViewModelProperty(name = "registerBtnTextColor")
    MutableLiveData<String> getRegisterBtnTextColor();
    // endregion

    // region #设置密码阶段
    @ViewModelProperty(name = "newPassword")
    MutableLiveData<String> getNewPassword();

    @ViewModelProperty(name = "retrievePasswordBtnEnabled")
    MutableLiveData<Boolean> getRetrievePasswordBtnEnabled();

    @ViewModelProperty(name = "retrievePasswordBtnBackground")
    MutableLiveData<Drawable> getRetrievePasswordBtnBackground();

    @ViewModelProperty(name = "retrievePasswordBtnTextColor")
    MutableLiveData<String> getRetrievePasswordBtnTextColor();
    // endregion

    // region #昵称设置阶段
    @ViewModelProperty(name = "nickname")
    MutableLiveData<String> getNickname();

    @ViewModelProperty(name = "nikeNameButtonEnabled")
    MutableLiveData<Boolean> getNikeNameButtonEnabled();

    @ViewModelProperty(name = "nikeNameButtonBackground")
    MutableLiveData<Drawable> getNikeNameButtonBackground();

    @ViewModelProperty(name = "nikeNameButtonTextColor")
    MutableLiveData<String> getNikeNameButtonTextColor();
    // endregion

    // region #手机登录阶段
    @ViewModelProperty(name = "loginPassword")
    MutableLiveData<String> getLoginPassword();

    @ViewModelProperty(name = "loginButtonEnabled")
    MutableLiveData<Boolean> getLoginButtonEnabled();

    @ViewModelProperty(name = "loginButtonBackground")
    MutableLiveData<Drawable> getLoginButtonBackground();

    @ViewModelProperty(name = "loginButtonTextColor")
    MutableLiveData<String> getLoginButtonTextColor();
    // endregion

    // region #修改密码阶段
    @ViewModelProperty(name = "changePassword")
    MutableLiveData<String> getChangePassword();

    @ViewModelProperty(name = "changePasswordBtnEnabled")
    MutableLiveData<Boolean> getChangePasswordBtnEnabled();

    @ViewModelProperty(name = "changePasswordBtnBackground")
    MutableLiveData<Drawable> getChangePasswordBtnBackground();

    @ViewModelProperty(name = "changePasswordBtnTextColor")
    MutableLiveData<String> getChangePasswordBtnTextColor();
    // endregion

}
